package com.itranlin.hexagon.core;

import com.itranlin.hexagon.spi.SpiFactory;

import java.util.List;


/**
 * 插件管理回调 SPI
 *
 * @author itranlin
 * @since 2024-10-24
 */
public interface HexagonPluginManagerCallback {

    /**
     * 获取 HexagonPluginManagerCallback spi.
     *
     * @return spi
     */
    static List<HexagonPluginManagerCallback> getSpi() {
        return SpiFactory.getList(HexagonPluginManagerCallback.class);
    }

    /**
     * 解析插件后的回调函数
     * @param meta 插件信息
     */
    void parseCallback(Plugin meta);

    /**
     * 安装插件后的回调函数
     * @param meta 插件信息
     */
    void installCallback(Plugin meta);

    /**
     * 卸载插件后的回调函数
     * @param meta 插件信息
     */
    void uninstallCallback(Plugin meta);


}
